/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package EA_Model.IEC61970.Generation.Production.impl;

import EA_Model.IEC61970.Core.impl.EquipmentImpl;

import EA_Model.IEC61970.Domain.ActivePower;
import EA_Model.IEC61970.Domain.ActivePowerChangeRate;
import EA_Model.IEC61970.Domain.Money;
import EA_Model.IEC61970.Domain.PU;
import EA_Model.IEC61970.Domain.PerCent;
import EA_Model.IEC61970.Domain.Seconds;

import EA_Model.IEC61970.Generation.Production.Classification;
import EA_Model.IEC61970.Generation.Production.GeneratingUnit;
import EA_Model.IEC61970.Generation.Production.GeneratorControlMode;
import EA_Model.IEC61970.Generation.Production.GeneratorControlSource;
import EA_Model.IEC61970.Generation.Production.GeneratorOperatingMode;
import EA_Model.IEC61970.Generation.Production.HeatRate;
import EA_Model.IEC61970.Generation.Production.ProductionPackage;

import org.eclipse.emf.common.notify.Notification;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;

import org.eclipse.emf.ecore.impl.ENotificationImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Generating Unit</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getAllocSpinResP <em>Alloc Spin Res P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getAutoCntrlMarginP <em>Auto Cntrl Margin P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getBaseP <em>Base P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getControlDeadband <em>Control Deadband</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getControlPulseHigh <em>Control Pulse High</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getControlPulseLow <em>Control Pulse Low</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getControlResponseRate <em>Control Response Rate</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getDispReserveFlag <em>Disp Reserve Flag</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getEfficiency <em>Efficiency</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getEnergyMinP <em>Energy Min P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getFastStartFlag <em>Fast Start Flag</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getFuelPriority <em>Fuel Priority</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getGenControlMode <em>Gen Control Mode</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getGenControlSource <em>Gen Control Source</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getGenOperatingMode <em>Gen Operating Mode</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getGovernorMPL <em>Governor MPL</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getGovernorSCD <em>Governor SCD</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getHighControlLimit <em>High Control Limit</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getInitialP <em>Initial P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getLongPF <em>Long PF</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getLowControlLimit <em>Low Control Limit</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getLowerRampRate <em>Lower Ramp Rate</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getMaxEconomicP <em>Max Economic P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getMaximumAllowableSpinningReserve <em>Maximum Allowable Spinning Reserve</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getMaxOperatingP <em>Max Operating P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getMinEconomicP <em>Min Economic P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getMinimumOffTime <em>Minimum Off Time</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getMinOperatingP <em>Min Operating P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getModelDetail <em>Model Detail</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getNominalP <em>Nominal P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getNormalPF <em>Normal PF</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getPenaltyFactor <em>Penalty Factor</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getRaiseRampRate <em>Raise Ramp Rate</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getRatedGrossMaxP <em>Rated Gross Max P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getRatedGrossMinP <em>Rated Gross Min P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getRatedNetMaxP <em>Rated Net Max P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getShortPF <em>Short PF</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getSpinReserveRamp <em>Spin Reserve Ramp</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getStartupCost <em>Startup Cost</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getStartupTime <em>Startup Time</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getStepChange <em>Step Change</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getTieLinePF <em>Tie Line PF</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.GeneratingUnitImpl#getVariableCost <em>Variable Cost</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class GeneratingUnitImpl extends EquipmentImpl implements GeneratingUnit {
	/**
	 * The cached value of the '{@link #getAllocSpinResP() <em>Alloc Spin Res P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getAllocSpinResP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower allocSpinResP;

	/**
	 * The cached value of the '{@link #getAutoCntrlMarginP() <em>Auto Cntrl Margin P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getAutoCntrlMarginP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower autoCntrlMarginP;

	/**
	 * The cached value of the '{@link #getBaseP() <em>Base P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getBaseP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower baseP;

	/**
	 * The cached value of the '{@link #getControlDeadband() <em>Control Deadband</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getControlDeadband()
	 * @generated
	 * @ordered
	 */
	protected ActivePower controlDeadband;

	/**
	 * The cached value of the '{@link #getControlPulseHigh() <em>Control Pulse High</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getControlPulseHigh()
	 * @generated
	 * @ordered
	 */
	protected Seconds controlPulseHigh;

	/**
	 * The cached value of the '{@link #getControlPulseLow() <em>Control Pulse Low</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getControlPulseLow()
	 * @generated
	 * @ordered
	 */
	protected Seconds controlPulseLow;

	/**
	 * The cached value of the '{@link #getControlResponseRate() <em>Control Response Rate</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getControlResponseRate()
	 * @generated
	 * @ordered
	 */
	protected ActivePowerChangeRate controlResponseRate;

	/**
	 * The cached value of the '{@link #getDispReserveFlag() <em>Disp Reserve Flag</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getDispReserveFlag()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Boolean dispReserveFlag;

	/**
	 * The cached value of the '{@link #getEfficiency() <em>Efficiency</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getEfficiency()
	 * @generated
	 * @ordered
	 */
	protected PU efficiency;

	/**
	 * The cached value of the '{@link #getEnergyMinP() <em>Energy Min P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getEnergyMinP()
	 * @generated
	 * @ordered
	 */
	protected HeatRate energyMinP;

	/**
	 * The cached value of the '{@link #getFastStartFlag() <em>Fast Start Flag</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFastStartFlag()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Boolean fastStartFlag;

	/**
	 * The cached value of the '{@link #getFuelPriority() <em>Fuel Priority</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFuelPriority()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Integer fuelPriority;

	/**
	 * The default value of the '{@link #getGenControlMode() <em>Gen Control Mode</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGenControlMode()
	 * @generated
	 * @ordered
	 */
	protected static final GeneratorControlMode GEN_CONTROL_MODE_EDEFAULT = GeneratorControlMode.SETPOINT;

	/**
	 * The cached value of the '{@link #getGenControlMode() <em>Gen Control Mode</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGenControlMode()
	 * @generated
	 * @ordered
	 */
	protected GeneratorControlMode genControlMode = GEN_CONTROL_MODE_EDEFAULT;

	/**
	 * The default value of the '{@link #getGenControlSource() <em>Gen Control Source</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGenControlSource()
	 * @generated
	 * @ordered
	 */
	protected static final GeneratorControlSource GEN_CONTROL_SOURCE_EDEFAULT = GeneratorControlSource.UNAVAILABLE;

	/**
	 * The cached value of the '{@link #getGenControlSource() <em>Gen Control Source</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGenControlSource()
	 * @generated
	 * @ordered
	 */
	protected GeneratorControlSource genControlSource = GEN_CONTROL_SOURCE_EDEFAULT;

	/**
	 * The default value of the '{@link #getGenOperatingMode() <em>Gen Operating Mode</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGenOperatingMode()
	 * @generated
	 * @ordered
	 */
	protected static final GeneratorOperatingMode GEN_OPERATING_MODE_EDEFAULT = GeneratorOperatingMode.OFF;

	/**
	 * The cached value of the '{@link #getGenOperatingMode() <em>Gen Operating Mode</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGenOperatingMode()
	 * @generated
	 * @ordered
	 */
	protected GeneratorOperatingMode genOperatingMode = GEN_OPERATING_MODE_EDEFAULT;

	/**
	 * The cached value of the '{@link #getGovernorMPL() <em>Governor MPL</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGovernorMPL()
	 * @generated
	 * @ordered
	 */
	protected PU governorMPL;

	/**
	 * The cached value of the '{@link #getGovernorSCD() <em>Governor SCD</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGovernorSCD()
	 * @generated
	 * @ordered
	 */
	protected PerCent governorSCD;

	/**
	 * The cached value of the '{@link #getHighControlLimit() <em>High Control Limit</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getHighControlLimit()
	 * @generated
	 * @ordered
	 */
	protected ActivePower highControlLimit;

	/**
	 * The cached value of the '{@link #getInitialP() <em>Initial P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getInitialP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower initialP;

	/**
	 * The cached value of the '{@link #getLongPF() <em>Long PF</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLongPF()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Float longPF;

	/**
	 * The cached value of the '{@link #getLowControlLimit() <em>Low Control Limit</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLowControlLimit()
	 * @generated
	 * @ordered
	 */
	protected ActivePower lowControlLimit;

	/**
	 * The cached value of the '{@link #getLowerRampRate() <em>Lower Ramp Rate</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLowerRampRate()
	 * @generated
	 * @ordered
	 */
	protected ActivePowerChangeRate lowerRampRate;

	/**
	 * The cached value of the '{@link #getMaxEconomicP() <em>Max Economic P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaxEconomicP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower maxEconomicP;

	/**
	 * The cached value of the '{@link #getMaximumAllowableSpinningReserve() <em>Maximum Allowable Spinning Reserve</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaximumAllowableSpinningReserve()
	 * @generated
	 * @ordered
	 */
	protected ActivePower maximumAllowableSpinningReserve;

	/**
	 * The cached value of the '{@link #getMaxOperatingP() <em>Max Operating P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaxOperatingP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower maxOperatingP;

	/**
	 * The cached value of the '{@link #getMinEconomicP() <em>Min Economic P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMinEconomicP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower minEconomicP;

	/**
	 * The cached value of the '{@link #getMinimumOffTime() <em>Minimum Off Time</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMinimumOffTime()
	 * @generated
	 * @ordered
	 */
	protected Seconds minimumOffTime;

	/**
	 * The cached value of the '{@link #getMinOperatingP() <em>Min Operating P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMinOperatingP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower minOperatingP;

	/**
	 * The cached value of the '{@link #getModelDetail() <em>Model Detail</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getModelDetail()
	 * @generated
	 * @ordered
	 */
	protected Classification modelDetail;

	/**
	 * The cached value of the '{@link #getNominalP() <em>Nominal P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNominalP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower nominalP;

	/**
	 * The cached value of the '{@link #getNormalPF() <em>Normal PF</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNormalPF()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Float normalPF;

	/**
	 * The cached value of the '{@link #getPenaltyFactor() <em>Penalty Factor</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getPenaltyFactor()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Float penaltyFactor;

	/**
	 * The cached value of the '{@link #getRaiseRampRate() <em>Raise Ramp Rate</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRaiseRampRate()
	 * @generated
	 * @ordered
	 */
	protected ActivePowerChangeRate raiseRampRate;

	/**
	 * The cached value of the '{@link #getRatedGrossMaxP() <em>Rated Gross Max P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRatedGrossMaxP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower ratedGrossMaxP;

	/**
	 * The cached value of the '{@link #getRatedGrossMinP() <em>Rated Gross Min P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRatedGrossMinP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower ratedGrossMinP;

	/**
	 * The cached value of the '{@link #getRatedNetMaxP() <em>Rated Net Max P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRatedNetMaxP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower ratedNetMaxP;

	/**
	 * The cached value of the '{@link #getShortPF() <em>Short PF</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getShortPF()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Float shortPF;

	/**
	 * The cached value of the '{@link #getSpinReserveRamp() <em>Spin Reserve Ramp</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSpinReserveRamp()
	 * @generated
	 * @ordered
	 */
	protected ActivePowerChangeRate spinReserveRamp;

	/**
	 * The cached value of the '{@link #getStartupCost() <em>Startup Cost</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getStartupCost()
	 * @generated
	 * @ordered
	 */
	protected Money startupCost;

	/**
	 * The cached value of the '{@link #getStartupTime() <em>Startup Time</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getStartupTime()
	 * @generated
	 * @ordered
	 */
	protected Seconds startupTime;

	/**
	 * The cached value of the '{@link #getStepChange() <em>Step Change</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getStepChange()
	 * @generated
	 * @ordered
	 */
	protected ActivePower stepChange;

	/**
	 * The cached value of the '{@link #getTieLinePF() <em>Tie Line PF</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTieLinePF()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Float tieLinePF;

	/**
	 * The cached value of the '{@link #getVariableCost() <em>Variable Cost</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getVariableCost()
	 * @generated
	 * @ordered
	 */
	protected Money variableCost;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected GeneratingUnitImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return ProductionPackage.Literals.GENERATING_UNIT;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getAllocSpinResP() {
		if (allocSpinResP != null && allocSpinResP.eIsProxy()) {
			InternalEObject oldAllocSpinResP = (InternalEObject)allocSpinResP;
			allocSpinResP = (ActivePower)eResolveProxy(oldAllocSpinResP);
			if (allocSpinResP != oldAllocSpinResP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__ALLOC_SPIN_RES_P, oldAllocSpinResP, allocSpinResP));
			}
		}
		return allocSpinResP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetAllocSpinResP() {
		return allocSpinResP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setAllocSpinResP(ActivePower newAllocSpinResP) {
		ActivePower oldAllocSpinResP = allocSpinResP;
		allocSpinResP = newAllocSpinResP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__ALLOC_SPIN_RES_P, oldAllocSpinResP, allocSpinResP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getAutoCntrlMarginP() {
		if (autoCntrlMarginP != null && autoCntrlMarginP.eIsProxy()) {
			InternalEObject oldAutoCntrlMarginP = (InternalEObject)autoCntrlMarginP;
			autoCntrlMarginP = (ActivePower)eResolveProxy(oldAutoCntrlMarginP);
			if (autoCntrlMarginP != oldAutoCntrlMarginP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__AUTO_CNTRL_MARGIN_P, oldAutoCntrlMarginP, autoCntrlMarginP));
			}
		}
		return autoCntrlMarginP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetAutoCntrlMarginP() {
		return autoCntrlMarginP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setAutoCntrlMarginP(ActivePower newAutoCntrlMarginP) {
		ActivePower oldAutoCntrlMarginP = autoCntrlMarginP;
		autoCntrlMarginP = newAutoCntrlMarginP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__AUTO_CNTRL_MARGIN_P, oldAutoCntrlMarginP, autoCntrlMarginP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getBaseP() {
		if (baseP != null && baseP.eIsProxy()) {
			InternalEObject oldBaseP = (InternalEObject)baseP;
			baseP = (ActivePower)eResolveProxy(oldBaseP);
			if (baseP != oldBaseP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__BASE_P, oldBaseP, baseP));
			}
		}
		return baseP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetBaseP() {
		return baseP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setBaseP(ActivePower newBaseP) {
		ActivePower oldBaseP = baseP;
		baseP = newBaseP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__BASE_P, oldBaseP, baseP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getControlDeadband() {
		if (controlDeadband != null && controlDeadband.eIsProxy()) {
			InternalEObject oldControlDeadband = (InternalEObject)controlDeadband;
			controlDeadband = (ActivePower)eResolveProxy(oldControlDeadband);
			if (controlDeadband != oldControlDeadband) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__CONTROL_DEADBAND, oldControlDeadband, controlDeadband));
			}
		}
		return controlDeadband;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetControlDeadband() {
		return controlDeadband;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setControlDeadband(ActivePower newControlDeadband) {
		ActivePower oldControlDeadband = controlDeadband;
		controlDeadband = newControlDeadband;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__CONTROL_DEADBAND, oldControlDeadband, controlDeadband));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds getControlPulseHigh() {
		if (controlPulseHigh != null && controlPulseHigh.eIsProxy()) {
			InternalEObject oldControlPulseHigh = (InternalEObject)controlPulseHigh;
			controlPulseHigh = (Seconds)eResolveProxy(oldControlPulseHigh);
			if (controlPulseHigh != oldControlPulseHigh) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__CONTROL_PULSE_HIGH, oldControlPulseHigh, controlPulseHigh));
			}
		}
		return controlPulseHigh;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds basicGetControlPulseHigh() {
		return controlPulseHigh;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setControlPulseHigh(Seconds newControlPulseHigh) {
		Seconds oldControlPulseHigh = controlPulseHigh;
		controlPulseHigh = newControlPulseHigh;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__CONTROL_PULSE_HIGH, oldControlPulseHigh, controlPulseHigh));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds getControlPulseLow() {
		if (controlPulseLow != null && controlPulseLow.eIsProxy()) {
			InternalEObject oldControlPulseLow = (InternalEObject)controlPulseLow;
			controlPulseLow = (Seconds)eResolveProxy(oldControlPulseLow);
			if (controlPulseLow != oldControlPulseLow) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__CONTROL_PULSE_LOW, oldControlPulseLow, controlPulseLow));
			}
		}
		return controlPulseLow;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds basicGetControlPulseLow() {
		return controlPulseLow;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setControlPulseLow(Seconds newControlPulseLow) {
		Seconds oldControlPulseLow = controlPulseLow;
		controlPulseLow = newControlPulseLow;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__CONTROL_PULSE_LOW, oldControlPulseLow, controlPulseLow));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePowerChangeRate getControlResponseRate() {
		if (controlResponseRate != null && controlResponseRate.eIsProxy()) {
			InternalEObject oldControlResponseRate = (InternalEObject)controlResponseRate;
			controlResponseRate = (ActivePowerChangeRate)eResolveProxy(oldControlResponseRate);
			if (controlResponseRate != oldControlResponseRate) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__CONTROL_RESPONSE_RATE, oldControlResponseRate, controlResponseRate));
			}
		}
		return controlResponseRate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePowerChangeRate basicGetControlResponseRate() {
		return controlResponseRate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setControlResponseRate(ActivePowerChangeRate newControlResponseRate) {
		ActivePowerChangeRate oldControlResponseRate = controlResponseRate;
		controlResponseRate = newControlResponseRate;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__CONTROL_RESPONSE_RATE, oldControlResponseRate, controlResponseRate));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Boolean getDispReserveFlag() {
		if (dispReserveFlag != null && dispReserveFlag.eIsProxy()) {
			InternalEObject oldDispReserveFlag = (InternalEObject)dispReserveFlag;
			dispReserveFlag = (EA_Model.IEC61970.Domain.Boolean)eResolveProxy(oldDispReserveFlag);
			if (dispReserveFlag != oldDispReserveFlag) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__DISP_RESERVE_FLAG, oldDispReserveFlag, dispReserveFlag));
			}
		}
		return dispReserveFlag;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Boolean basicGetDispReserveFlag() {
		return dispReserveFlag;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setDispReserveFlag(EA_Model.IEC61970.Domain.Boolean newDispReserveFlag) {
		EA_Model.IEC61970.Domain.Boolean oldDispReserveFlag = dispReserveFlag;
		dispReserveFlag = newDispReserveFlag;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__DISP_RESERVE_FLAG, oldDispReserveFlag, dispReserveFlag));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PU getEfficiency() {
		if (efficiency != null && efficiency.eIsProxy()) {
			InternalEObject oldEfficiency = (InternalEObject)efficiency;
			efficiency = (PU)eResolveProxy(oldEfficiency);
			if (efficiency != oldEfficiency) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__EFFICIENCY, oldEfficiency, efficiency));
			}
		}
		return efficiency;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PU basicGetEfficiency() {
		return efficiency;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setEfficiency(PU newEfficiency) {
		PU oldEfficiency = efficiency;
		efficiency = newEfficiency;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__EFFICIENCY, oldEfficiency, efficiency));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public HeatRate getEnergyMinP() {
		if (energyMinP != null && energyMinP.eIsProxy()) {
			InternalEObject oldEnergyMinP = (InternalEObject)energyMinP;
			energyMinP = (HeatRate)eResolveProxy(oldEnergyMinP);
			if (energyMinP != oldEnergyMinP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__ENERGY_MIN_P, oldEnergyMinP, energyMinP));
			}
		}
		return energyMinP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public HeatRate basicGetEnergyMinP() {
		return energyMinP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setEnergyMinP(HeatRate newEnergyMinP) {
		HeatRate oldEnergyMinP = energyMinP;
		energyMinP = newEnergyMinP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__ENERGY_MIN_P, oldEnergyMinP, energyMinP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Boolean getFastStartFlag() {
		if (fastStartFlag != null && fastStartFlag.eIsProxy()) {
			InternalEObject oldFastStartFlag = (InternalEObject)fastStartFlag;
			fastStartFlag = (EA_Model.IEC61970.Domain.Boolean)eResolveProxy(oldFastStartFlag);
			if (fastStartFlag != oldFastStartFlag) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__FAST_START_FLAG, oldFastStartFlag, fastStartFlag));
			}
		}
		return fastStartFlag;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Boolean basicGetFastStartFlag() {
		return fastStartFlag;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setFastStartFlag(EA_Model.IEC61970.Domain.Boolean newFastStartFlag) {
		EA_Model.IEC61970.Domain.Boolean oldFastStartFlag = fastStartFlag;
		fastStartFlag = newFastStartFlag;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__FAST_START_FLAG, oldFastStartFlag, fastStartFlag));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Integer getFuelPriority() {
		if (fuelPriority != null && fuelPriority.eIsProxy()) {
			InternalEObject oldFuelPriority = (InternalEObject)fuelPriority;
			fuelPriority = (EA_Model.IEC61970.Domain.Integer)eResolveProxy(oldFuelPriority);
			if (fuelPriority != oldFuelPriority) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__FUEL_PRIORITY, oldFuelPriority, fuelPriority));
			}
		}
		return fuelPriority;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Integer basicGetFuelPriority() {
		return fuelPriority;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setFuelPriority(EA_Model.IEC61970.Domain.Integer newFuelPriority) {
		EA_Model.IEC61970.Domain.Integer oldFuelPriority = fuelPriority;
		fuelPriority = newFuelPriority;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__FUEL_PRIORITY, oldFuelPriority, fuelPriority));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public GeneratorControlMode getGenControlMode() {
		return genControlMode;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setGenControlMode(GeneratorControlMode newGenControlMode) {
		GeneratorControlMode oldGenControlMode = genControlMode;
		genControlMode = newGenControlMode == null ? GEN_CONTROL_MODE_EDEFAULT : newGenControlMode;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__GEN_CONTROL_MODE, oldGenControlMode, genControlMode));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public GeneratorControlSource getGenControlSource() {
		return genControlSource;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setGenControlSource(GeneratorControlSource newGenControlSource) {
		GeneratorControlSource oldGenControlSource = genControlSource;
		genControlSource = newGenControlSource == null ? GEN_CONTROL_SOURCE_EDEFAULT : newGenControlSource;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__GEN_CONTROL_SOURCE, oldGenControlSource, genControlSource));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public GeneratorOperatingMode getGenOperatingMode() {
		return genOperatingMode;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setGenOperatingMode(GeneratorOperatingMode newGenOperatingMode) {
		GeneratorOperatingMode oldGenOperatingMode = genOperatingMode;
		genOperatingMode = newGenOperatingMode == null ? GEN_OPERATING_MODE_EDEFAULT : newGenOperatingMode;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__GEN_OPERATING_MODE, oldGenOperatingMode, genOperatingMode));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PU getGovernorMPL() {
		if (governorMPL != null && governorMPL.eIsProxy()) {
			InternalEObject oldGovernorMPL = (InternalEObject)governorMPL;
			governorMPL = (PU)eResolveProxy(oldGovernorMPL);
			if (governorMPL != oldGovernorMPL) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__GOVERNOR_MPL, oldGovernorMPL, governorMPL));
			}
		}
		return governorMPL;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PU basicGetGovernorMPL() {
		return governorMPL;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setGovernorMPL(PU newGovernorMPL) {
		PU oldGovernorMPL = governorMPL;
		governorMPL = newGovernorMPL;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__GOVERNOR_MPL, oldGovernorMPL, governorMPL));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PerCent getGovernorSCD() {
		if (governorSCD != null && governorSCD.eIsProxy()) {
			InternalEObject oldGovernorSCD = (InternalEObject)governorSCD;
			governorSCD = (PerCent)eResolveProxy(oldGovernorSCD);
			if (governorSCD != oldGovernorSCD) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__GOVERNOR_SCD, oldGovernorSCD, governorSCD));
			}
		}
		return governorSCD;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PerCent basicGetGovernorSCD() {
		return governorSCD;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setGovernorSCD(PerCent newGovernorSCD) {
		PerCent oldGovernorSCD = governorSCD;
		governorSCD = newGovernorSCD;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__GOVERNOR_SCD, oldGovernorSCD, governorSCD));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getHighControlLimit() {
		if (highControlLimit != null && highControlLimit.eIsProxy()) {
			InternalEObject oldHighControlLimit = (InternalEObject)highControlLimit;
			highControlLimit = (ActivePower)eResolveProxy(oldHighControlLimit);
			if (highControlLimit != oldHighControlLimit) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__HIGH_CONTROL_LIMIT, oldHighControlLimit, highControlLimit));
			}
		}
		return highControlLimit;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetHighControlLimit() {
		return highControlLimit;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setHighControlLimit(ActivePower newHighControlLimit) {
		ActivePower oldHighControlLimit = highControlLimit;
		highControlLimit = newHighControlLimit;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__HIGH_CONTROL_LIMIT, oldHighControlLimit, highControlLimit));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getInitialP() {
		if (initialP != null && initialP.eIsProxy()) {
			InternalEObject oldInitialP = (InternalEObject)initialP;
			initialP = (ActivePower)eResolveProxy(oldInitialP);
			if (initialP != oldInitialP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__INITIAL_P, oldInitialP, initialP));
			}
		}
		return initialP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetInitialP() {
		return initialP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setInitialP(ActivePower newInitialP) {
		ActivePower oldInitialP = initialP;
		initialP = newInitialP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__INITIAL_P, oldInitialP, initialP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float getLongPF() {
		if (longPF != null && longPF.eIsProxy()) {
			InternalEObject oldLongPF = (InternalEObject)longPF;
			longPF = (EA_Model.IEC61970.Domain.Float)eResolveProxy(oldLongPF);
			if (longPF != oldLongPF) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__LONG_PF, oldLongPF, longPF));
			}
		}
		return longPF;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float basicGetLongPF() {
		return longPF;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLongPF(EA_Model.IEC61970.Domain.Float newLongPF) {
		EA_Model.IEC61970.Domain.Float oldLongPF = longPF;
		longPF = newLongPF;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__LONG_PF, oldLongPF, longPF));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getLowControlLimit() {
		if (lowControlLimit != null && lowControlLimit.eIsProxy()) {
			InternalEObject oldLowControlLimit = (InternalEObject)lowControlLimit;
			lowControlLimit = (ActivePower)eResolveProxy(oldLowControlLimit);
			if (lowControlLimit != oldLowControlLimit) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__LOW_CONTROL_LIMIT, oldLowControlLimit, lowControlLimit));
			}
		}
		return lowControlLimit;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetLowControlLimit() {
		return lowControlLimit;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLowControlLimit(ActivePower newLowControlLimit) {
		ActivePower oldLowControlLimit = lowControlLimit;
		lowControlLimit = newLowControlLimit;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__LOW_CONTROL_LIMIT, oldLowControlLimit, lowControlLimit));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePowerChangeRate getLowerRampRate() {
		if (lowerRampRate != null && lowerRampRate.eIsProxy()) {
			InternalEObject oldLowerRampRate = (InternalEObject)lowerRampRate;
			lowerRampRate = (ActivePowerChangeRate)eResolveProxy(oldLowerRampRate);
			if (lowerRampRate != oldLowerRampRate) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__LOWER_RAMP_RATE, oldLowerRampRate, lowerRampRate));
			}
		}
		return lowerRampRate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePowerChangeRate basicGetLowerRampRate() {
		return lowerRampRate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLowerRampRate(ActivePowerChangeRate newLowerRampRate) {
		ActivePowerChangeRate oldLowerRampRate = lowerRampRate;
		lowerRampRate = newLowerRampRate;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__LOWER_RAMP_RATE, oldLowerRampRate, lowerRampRate));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getMaxEconomicP() {
		if (maxEconomicP != null && maxEconomicP.eIsProxy()) {
			InternalEObject oldMaxEconomicP = (InternalEObject)maxEconomicP;
			maxEconomicP = (ActivePower)eResolveProxy(oldMaxEconomicP);
			if (maxEconomicP != oldMaxEconomicP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__MAX_ECONOMIC_P, oldMaxEconomicP, maxEconomicP));
			}
		}
		return maxEconomicP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetMaxEconomicP() {
		return maxEconomicP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMaxEconomicP(ActivePower newMaxEconomicP) {
		ActivePower oldMaxEconomicP = maxEconomicP;
		maxEconomicP = newMaxEconomicP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__MAX_ECONOMIC_P, oldMaxEconomicP, maxEconomicP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getMaximumAllowableSpinningReserve() {
		if (maximumAllowableSpinningReserve != null && maximumAllowableSpinningReserve.eIsProxy()) {
			InternalEObject oldMaximumAllowableSpinningReserve = (InternalEObject)maximumAllowableSpinningReserve;
			maximumAllowableSpinningReserve = (ActivePower)eResolveProxy(oldMaximumAllowableSpinningReserve);
			if (maximumAllowableSpinningReserve != oldMaximumAllowableSpinningReserve) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__MAXIMUM_ALLOWABLE_SPINNING_RESERVE, oldMaximumAllowableSpinningReserve, maximumAllowableSpinningReserve));
			}
		}
		return maximumAllowableSpinningReserve;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetMaximumAllowableSpinningReserve() {
		return maximumAllowableSpinningReserve;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMaximumAllowableSpinningReserve(ActivePower newMaximumAllowableSpinningReserve) {
		ActivePower oldMaximumAllowableSpinningReserve = maximumAllowableSpinningReserve;
		maximumAllowableSpinningReserve = newMaximumAllowableSpinningReserve;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__MAXIMUM_ALLOWABLE_SPINNING_RESERVE, oldMaximumAllowableSpinningReserve, maximumAllowableSpinningReserve));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getMaxOperatingP() {
		if (maxOperatingP != null && maxOperatingP.eIsProxy()) {
			InternalEObject oldMaxOperatingP = (InternalEObject)maxOperatingP;
			maxOperatingP = (ActivePower)eResolveProxy(oldMaxOperatingP);
			if (maxOperatingP != oldMaxOperatingP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__MAX_OPERATING_P, oldMaxOperatingP, maxOperatingP));
			}
		}
		return maxOperatingP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetMaxOperatingP() {
		return maxOperatingP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMaxOperatingP(ActivePower newMaxOperatingP) {
		ActivePower oldMaxOperatingP = maxOperatingP;
		maxOperatingP = newMaxOperatingP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__MAX_OPERATING_P, oldMaxOperatingP, maxOperatingP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getMinEconomicP() {
		if (minEconomicP != null && minEconomicP.eIsProxy()) {
			InternalEObject oldMinEconomicP = (InternalEObject)minEconomicP;
			minEconomicP = (ActivePower)eResolveProxy(oldMinEconomicP);
			if (minEconomicP != oldMinEconomicP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__MIN_ECONOMIC_P, oldMinEconomicP, minEconomicP));
			}
		}
		return minEconomicP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetMinEconomicP() {
		return minEconomicP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMinEconomicP(ActivePower newMinEconomicP) {
		ActivePower oldMinEconomicP = minEconomicP;
		minEconomicP = newMinEconomicP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__MIN_ECONOMIC_P, oldMinEconomicP, minEconomicP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds getMinimumOffTime() {
		if (minimumOffTime != null && minimumOffTime.eIsProxy()) {
			InternalEObject oldMinimumOffTime = (InternalEObject)minimumOffTime;
			minimumOffTime = (Seconds)eResolveProxy(oldMinimumOffTime);
			if (minimumOffTime != oldMinimumOffTime) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__MINIMUM_OFF_TIME, oldMinimumOffTime, minimumOffTime));
			}
		}
		return minimumOffTime;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds basicGetMinimumOffTime() {
		return minimumOffTime;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMinimumOffTime(Seconds newMinimumOffTime) {
		Seconds oldMinimumOffTime = minimumOffTime;
		minimumOffTime = newMinimumOffTime;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__MINIMUM_OFF_TIME, oldMinimumOffTime, minimumOffTime));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getMinOperatingP() {
		if (minOperatingP != null && minOperatingP.eIsProxy()) {
			InternalEObject oldMinOperatingP = (InternalEObject)minOperatingP;
			minOperatingP = (ActivePower)eResolveProxy(oldMinOperatingP);
			if (minOperatingP != oldMinOperatingP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__MIN_OPERATING_P, oldMinOperatingP, minOperatingP));
			}
		}
		return minOperatingP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetMinOperatingP() {
		return minOperatingP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMinOperatingP(ActivePower newMinOperatingP) {
		ActivePower oldMinOperatingP = minOperatingP;
		minOperatingP = newMinOperatingP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__MIN_OPERATING_P, oldMinOperatingP, minOperatingP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Classification getModelDetail() {
		if (modelDetail != null && modelDetail.eIsProxy()) {
			InternalEObject oldModelDetail = (InternalEObject)modelDetail;
			modelDetail = (Classification)eResolveProxy(oldModelDetail);
			if (modelDetail != oldModelDetail) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__MODEL_DETAIL, oldModelDetail, modelDetail));
			}
		}
		return modelDetail;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Classification basicGetModelDetail() {
		return modelDetail;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setModelDetail(Classification newModelDetail) {
		Classification oldModelDetail = modelDetail;
		modelDetail = newModelDetail;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__MODEL_DETAIL, oldModelDetail, modelDetail));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getNominalP() {
		if (nominalP != null && nominalP.eIsProxy()) {
			InternalEObject oldNominalP = (InternalEObject)nominalP;
			nominalP = (ActivePower)eResolveProxy(oldNominalP);
			if (nominalP != oldNominalP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__NOMINAL_P, oldNominalP, nominalP));
			}
		}
		return nominalP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetNominalP() {
		return nominalP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNominalP(ActivePower newNominalP) {
		ActivePower oldNominalP = nominalP;
		nominalP = newNominalP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__NOMINAL_P, oldNominalP, nominalP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float getNormalPF() {
		if (normalPF != null && normalPF.eIsProxy()) {
			InternalEObject oldNormalPF = (InternalEObject)normalPF;
			normalPF = (EA_Model.IEC61970.Domain.Float)eResolveProxy(oldNormalPF);
			if (normalPF != oldNormalPF) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__NORMAL_PF, oldNormalPF, normalPF));
			}
		}
		return normalPF;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float basicGetNormalPF() {
		return normalPF;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNormalPF(EA_Model.IEC61970.Domain.Float newNormalPF) {
		EA_Model.IEC61970.Domain.Float oldNormalPF = normalPF;
		normalPF = newNormalPF;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__NORMAL_PF, oldNormalPF, normalPF));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float getPenaltyFactor() {
		if (penaltyFactor != null && penaltyFactor.eIsProxy()) {
			InternalEObject oldPenaltyFactor = (InternalEObject)penaltyFactor;
			penaltyFactor = (EA_Model.IEC61970.Domain.Float)eResolveProxy(oldPenaltyFactor);
			if (penaltyFactor != oldPenaltyFactor) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__PENALTY_FACTOR, oldPenaltyFactor, penaltyFactor));
			}
		}
		return penaltyFactor;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float basicGetPenaltyFactor() {
		return penaltyFactor;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setPenaltyFactor(EA_Model.IEC61970.Domain.Float newPenaltyFactor) {
		EA_Model.IEC61970.Domain.Float oldPenaltyFactor = penaltyFactor;
		penaltyFactor = newPenaltyFactor;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__PENALTY_FACTOR, oldPenaltyFactor, penaltyFactor));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePowerChangeRate getRaiseRampRate() {
		if (raiseRampRate != null && raiseRampRate.eIsProxy()) {
			InternalEObject oldRaiseRampRate = (InternalEObject)raiseRampRate;
			raiseRampRate = (ActivePowerChangeRate)eResolveProxy(oldRaiseRampRate);
			if (raiseRampRate != oldRaiseRampRate) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__RAISE_RAMP_RATE, oldRaiseRampRate, raiseRampRate));
			}
		}
		return raiseRampRate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePowerChangeRate basicGetRaiseRampRate() {
		return raiseRampRate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setRaiseRampRate(ActivePowerChangeRate newRaiseRampRate) {
		ActivePowerChangeRate oldRaiseRampRate = raiseRampRate;
		raiseRampRate = newRaiseRampRate;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__RAISE_RAMP_RATE, oldRaiseRampRate, raiseRampRate));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getRatedGrossMaxP() {
		if (ratedGrossMaxP != null && ratedGrossMaxP.eIsProxy()) {
			InternalEObject oldRatedGrossMaxP = (InternalEObject)ratedGrossMaxP;
			ratedGrossMaxP = (ActivePower)eResolveProxy(oldRatedGrossMaxP);
			if (ratedGrossMaxP != oldRatedGrossMaxP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__RATED_GROSS_MAX_P, oldRatedGrossMaxP, ratedGrossMaxP));
			}
		}
		return ratedGrossMaxP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetRatedGrossMaxP() {
		return ratedGrossMaxP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setRatedGrossMaxP(ActivePower newRatedGrossMaxP) {
		ActivePower oldRatedGrossMaxP = ratedGrossMaxP;
		ratedGrossMaxP = newRatedGrossMaxP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__RATED_GROSS_MAX_P, oldRatedGrossMaxP, ratedGrossMaxP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getRatedGrossMinP() {
		if (ratedGrossMinP != null && ratedGrossMinP.eIsProxy()) {
			InternalEObject oldRatedGrossMinP = (InternalEObject)ratedGrossMinP;
			ratedGrossMinP = (ActivePower)eResolveProxy(oldRatedGrossMinP);
			if (ratedGrossMinP != oldRatedGrossMinP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__RATED_GROSS_MIN_P, oldRatedGrossMinP, ratedGrossMinP));
			}
		}
		return ratedGrossMinP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetRatedGrossMinP() {
		return ratedGrossMinP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setRatedGrossMinP(ActivePower newRatedGrossMinP) {
		ActivePower oldRatedGrossMinP = ratedGrossMinP;
		ratedGrossMinP = newRatedGrossMinP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__RATED_GROSS_MIN_P, oldRatedGrossMinP, ratedGrossMinP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getRatedNetMaxP() {
		if (ratedNetMaxP != null && ratedNetMaxP.eIsProxy()) {
			InternalEObject oldRatedNetMaxP = (InternalEObject)ratedNetMaxP;
			ratedNetMaxP = (ActivePower)eResolveProxy(oldRatedNetMaxP);
			if (ratedNetMaxP != oldRatedNetMaxP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__RATED_NET_MAX_P, oldRatedNetMaxP, ratedNetMaxP));
			}
		}
		return ratedNetMaxP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetRatedNetMaxP() {
		return ratedNetMaxP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setRatedNetMaxP(ActivePower newRatedNetMaxP) {
		ActivePower oldRatedNetMaxP = ratedNetMaxP;
		ratedNetMaxP = newRatedNetMaxP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__RATED_NET_MAX_P, oldRatedNetMaxP, ratedNetMaxP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float getShortPF() {
		if (shortPF != null && shortPF.eIsProxy()) {
			InternalEObject oldShortPF = (InternalEObject)shortPF;
			shortPF = (EA_Model.IEC61970.Domain.Float)eResolveProxy(oldShortPF);
			if (shortPF != oldShortPF) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__SHORT_PF, oldShortPF, shortPF));
			}
		}
		return shortPF;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float basicGetShortPF() {
		return shortPF;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setShortPF(EA_Model.IEC61970.Domain.Float newShortPF) {
		EA_Model.IEC61970.Domain.Float oldShortPF = shortPF;
		shortPF = newShortPF;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__SHORT_PF, oldShortPF, shortPF));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePowerChangeRate getSpinReserveRamp() {
		if (spinReserveRamp != null && spinReserveRamp.eIsProxy()) {
			InternalEObject oldSpinReserveRamp = (InternalEObject)spinReserveRamp;
			spinReserveRamp = (ActivePowerChangeRate)eResolveProxy(oldSpinReserveRamp);
			if (spinReserveRamp != oldSpinReserveRamp) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__SPIN_RESERVE_RAMP, oldSpinReserveRamp, spinReserveRamp));
			}
		}
		return spinReserveRamp;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePowerChangeRate basicGetSpinReserveRamp() {
		return spinReserveRamp;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSpinReserveRamp(ActivePowerChangeRate newSpinReserveRamp) {
		ActivePowerChangeRate oldSpinReserveRamp = spinReserveRamp;
		spinReserveRamp = newSpinReserveRamp;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__SPIN_RESERVE_RAMP, oldSpinReserveRamp, spinReserveRamp));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Money getStartupCost() {
		if (startupCost != null && startupCost.eIsProxy()) {
			InternalEObject oldStartupCost = (InternalEObject)startupCost;
			startupCost = (Money)eResolveProxy(oldStartupCost);
			if (startupCost != oldStartupCost) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__STARTUP_COST, oldStartupCost, startupCost));
			}
		}
		return startupCost;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Money basicGetStartupCost() {
		return startupCost;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setStartupCost(Money newStartupCost) {
		Money oldStartupCost = startupCost;
		startupCost = newStartupCost;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__STARTUP_COST, oldStartupCost, startupCost));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds getStartupTime() {
		if (startupTime != null && startupTime.eIsProxy()) {
			InternalEObject oldStartupTime = (InternalEObject)startupTime;
			startupTime = (Seconds)eResolveProxy(oldStartupTime);
			if (startupTime != oldStartupTime) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__STARTUP_TIME, oldStartupTime, startupTime));
			}
		}
		return startupTime;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds basicGetStartupTime() {
		return startupTime;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setStartupTime(Seconds newStartupTime) {
		Seconds oldStartupTime = startupTime;
		startupTime = newStartupTime;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__STARTUP_TIME, oldStartupTime, startupTime));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getStepChange() {
		if (stepChange != null && stepChange.eIsProxy()) {
			InternalEObject oldStepChange = (InternalEObject)stepChange;
			stepChange = (ActivePower)eResolveProxy(oldStepChange);
			if (stepChange != oldStepChange) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__STEP_CHANGE, oldStepChange, stepChange));
			}
		}
		return stepChange;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetStepChange() {
		return stepChange;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setStepChange(ActivePower newStepChange) {
		ActivePower oldStepChange = stepChange;
		stepChange = newStepChange;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__STEP_CHANGE, oldStepChange, stepChange));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float getTieLinePF() {
		if (tieLinePF != null && tieLinePF.eIsProxy()) {
			InternalEObject oldTieLinePF = (InternalEObject)tieLinePF;
			tieLinePF = (EA_Model.IEC61970.Domain.Float)eResolveProxy(oldTieLinePF);
			if (tieLinePF != oldTieLinePF) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__TIE_LINE_PF, oldTieLinePF, tieLinePF));
			}
		}
		return tieLinePF;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float basicGetTieLinePF() {
		return tieLinePF;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTieLinePF(EA_Model.IEC61970.Domain.Float newTieLinePF) {
		EA_Model.IEC61970.Domain.Float oldTieLinePF = tieLinePF;
		tieLinePF = newTieLinePF;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__TIE_LINE_PF, oldTieLinePF, tieLinePF));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Money getVariableCost() {
		if (variableCost != null && variableCost.eIsProxy()) {
			InternalEObject oldVariableCost = (InternalEObject)variableCost;
			variableCost = (Money)eResolveProxy(oldVariableCost);
			if (variableCost != oldVariableCost) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.GENERATING_UNIT__VARIABLE_COST, oldVariableCost, variableCost));
			}
		}
		return variableCost;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Money basicGetVariableCost() {
		return variableCost;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setVariableCost(Money newVariableCost) {
		Money oldVariableCost = variableCost;
		variableCost = newVariableCost;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.GENERATING_UNIT__VARIABLE_COST, oldVariableCost, variableCost));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case ProductionPackage.GENERATING_UNIT__ALLOC_SPIN_RES_P:
				if (resolve) return getAllocSpinResP();
				return basicGetAllocSpinResP();
			case ProductionPackage.GENERATING_UNIT__AUTO_CNTRL_MARGIN_P:
				if (resolve) return getAutoCntrlMarginP();
				return basicGetAutoCntrlMarginP();
			case ProductionPackage.GENERATING_UNIT__BASE_P:
				if (resolve) return getBaseP();
				return basicGetBaseP();
			case ProductionPackage.GENERATING_UNIT__CONTROL_DEADBAND:
				if (resolve) return getControlDeadband();
				return basicGetControlDeadband();
			case ProductionPackage.GENERATING_UNIT__CONTROL_PULSE_HIGH:
				if (resolve) return getControlPulseHigh();
				return basicGetControlPulseHigh();
			case ProductionPackage.GENERATING_UNIT__CONTROL_PULSE_LOW:
				if (resolve) return getControlPulseLow();
				return basicGetControlPulseLow();
			case ProductionPackage.GENERATING_UNIT__CONTROL_RESPONSE_RATE:
				if (resolve) return getControlResponseRate();
				return basicGetControlResponseRate();
			case ProductionPackage.GENERATING_UNIT__DISP_RESERVE_FLAG:
				if (resolve) return getDispReserveFlag();
				return basicGetDispReserveFlag();
			case ProductionPackage.GENERATING_UNIT__EFFICIENCY:
				if (resolve) return getEfficiency();
				return basicGetEfficiency();
			case ProductionPackage.GENERATING_UNIT__ENERGY_MIN_P:
				if (resolve) return getEnergyMinP();
				return basicGetEnergyMinP();
			case ProductionPackage.GENERATING_UNIT__FAST_START_FLAG:
				if (resolve) return getFastStartFlag();
				return basicGetFastStartFlag();
			case ProductionPackage.GENERATING_UNIT__FUEL_PRIORITY:
				if (resolve) return getFuelPriority();
				return basicGetFuelPriority();
			case ProductionPackage.GENERATING_UNIT__GEN_CONTROL_MODE:
				return getGenControlMode();
			case ProductionPackage.GENERATING_UNIT__GEN_CONTROL_SOURCE:
				return getGenControlSource();
			case ProductionPackage.GENERATING_UNIT__GEN_OPERATING_MODE:
				return getGenOperatingMode();
			case ProductionPackage.GENERATING_UNIT__GOVERNOR_MPL:
				if (resolve) return getGovernorMPL();
				return basicGetGovernorMPL();
			case ProductionPackage.GENERATING_UNIT__GOVERNOR_SCD:
				if (resolve) return getGovernorSCD();
				return basicGetGovernorSCD();
			case ProductionPackage.GENERATING_UNIT__HIGH_CONTROL_LIMIT:
				if (resolve) return getHighControlLimit();
				return basicGetHighControlLimit();
			case ProductionPackage.GENERATING_UNIT__INITIAL_P:
				if (resolve) return getInitialP();
				return basicGetInitialP();
			case ProductionPackage.GENERATING_UNIT__LONG_PF:
				if (resolve) return getLongPF();
				return basicGetLongPF();
			case ProductionPackage.GENERATING_UNIT__LOW_CONTROL_LIMIT:
				if (resolve) return getLowControlLimit();
				return basicGetLowControlLimit();
			case ProductionPackage.GENERATING_UNIT__LOWER_RAMP_RATE:
				if (resolve) return getLowerRampRate();
				return basicGetLowerRampRate();
			case ProductionPackage.GENERATING_UNIT__MAX_ECONOMIC_P:
				if (resolve) return getMaxEconomicP();
				return basicGetMaxEconomicP();
			case ProductionPackage.GENERATING_UNIT__MAXIMUM_ALLOWABLE_SPINNING_RESERVE:
				if (resolve) return getMaximumAllowableSpinningReserve();
				return basicGetMaximumAllowableSpinningReserve();
			case ProductionPackage.GENERATING_UNIT__MAX_OPERATING_P:
				if (resolve) return getMaxOperatingP();
				return basicGetMaxOperatingP();
			case ProductionPackage.GENERATING_UNIT__MIN_ECONOMIC_P:
				if (resolve) return getMinEconomicP();
				return basicGetMinEconomicP();
			case ProductionPackage.GENERATING_UNIT__MINIMUM_OFF_TIME:
				if (resolve) return getMinimumOffTime();
				return basicGetMinimumOffTime();
			case ProductionPackage.GENERATING_UNIT__MIN_OPERATING_P:
				if (resolve) return getMinOperatingP();
				return basicGetMinOperatingP();
			case ProductionPackage.GENERATING_UNIT__MODEL_DETAIL:
				if (resolve) return getModelDetail();
				return basicGetModelDetail();
			case ProductionPackage.GENERATING_UNIT__NOMINAL_P:
				if (resolve) return getNominalP();
				return basicGetNominalP();
			case ProductionPackage.GENERATING_UNIT__NORMAL_PF:
				if (resolve) return getNormalPF();
				return basicGetNormalPF();
			case ProductionPackage.GENERATING_UNIT__PENALTY_FACTOR:
				if (resolve) return getPenaltyFactor();
				return basicGetPenaltyFactor();
			case ProductionPackage.GENERATING_UNIT__RAISE_RAMP_RATE:
				if (resolve) return getRaiseRampRate();
				return basicGetRaiseRampRate();
			case ProductionPackage.GENERATING_UNIT__RATED_GROSS_MAX_P:
				if (resolve) return getRatedGrossMaxP();
				return basicGetRatedGrossMaxP();
			case ProductionPackage.GENERATING_UNIT__RATED_GROSS_MIN_P:
				if (resolve) return getRatedGrossMinP();
				return basicGetRatedGrossMinP();
			case ProductionPackage.GENERATING_UNIT__RATED_NET_MAX_P:
				if (resolve) return getRatedNetMaxP();
				return basicGetRatedNetMaxP();
			case ProductionPackage.GENERATING_UNIT__SHORT_PF:
				if (resolve) return getShortPF();
				return basicGetShortPF();
			case ProductionPackage.GENERATING_UNIT__SPIN_RESERVE_RAMP:
				if (resolve) return getSpinReserveRamp();
				return basicGetSpinReserveRamp();
			case ProductionPackage.GENERATING_UNIT__STARTUP_COST:
				if (resolve) return getStartupCost();
				return basicGetStartupCost();
			case ProductionPackage.GENERATING_UNIT__STARTUP_TIME:
				if (resolve) return getStartupTime();
				return basicGetStartupTime();
			case ProductionPackage.GENERATING_UNIT__STEP_CHANGE:
				if (resolve) return getStepChange();
				return basicGetStepChange();
			case ProductionPackage.GENERATING_UNIT__TIE_LINE_PF:
				if (resolve) return getTieLinePF();
				return basicGetTieLinePF();
			case ProductionPackage.GENERATING_UNIT__VARIABLE_COST:
				if (resolve) return getVariableCost();
				return basicGetVariableCost();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case ProductionPackage.GENERATING_UNIT__ALLOC_SPIN_RES_P:
				setAllocSpinResP((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__AUTO_CNTRL_MARGIN_P:
				setAutoCntrlMarginP((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__BASE_P:
				setBaseP((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__CONTROL_DEADBAND:
				setControlDeadband((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__CONTROL_PULSE_HIGH:
				setControlPulseHigh((Seconds)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__CONTROL_PULSE_LOW:
				setControlPulseLow((Seconds)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__CONTROL_RESPONSE_RATE:
				setControlResponseRate((ActivePowerChangeRate)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__DISP_RESERVE_FLAG:
				setDispReserveFlag((EA_Model.IEC61970.Domain.Boolean)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__EFFICIENCY:
				setEfficiency((PU)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__ENERGY_MIN_P:
				setEnergyMinP((HeatRate)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__FAST_START_FLAG:
				setFastStartFlag((EA_Model.IEC61970.Domain.Boolean)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__FUEL_PRIORITY:
				setFuelPriority((EA_Model.IEC61970.Domain.Integer)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__GEN_CONTROL_MODE:
				setGenControlMode((GeneratorControlMode)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__GEN_CONTROL_SOURCE:
				setGenControlSource((GeneratorControlSource)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__GEN_OPERATING_MODE:
				setGenOperatingMode((GeneratorOperatingMode)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__GOVERNOR_MPL:
				setGovernorMPL((PU)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__GOVERNOR_SCD:
				setGovernorSCD((PerCent)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__HIGH_CONTROL_LIMIT:
				setHighControlLimit((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__INITIAL_P:
				setInitialP((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__LONG_PF:
				setLongPF((EA_Model.IEC61970.Domain.Float)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__LOW_CONTROL_LIMIT:
				setLowControlLimit((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__LOWER_RAMP_RATE:
				setLowerRampRate((ActivePowerChangeRate)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__MAX_ECONOMIC_P:
				setMaxEconomicP((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__MAXIMUM_ALLOWABLE_SPINNING_RESERVE:
				setMaximumAllowableSpinningReserve((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__MAX_OPERATING_P:
				setMaxOperatingP((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__MIN_ECONOMIC_P:
				setMinEconomicP((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__MINIMUM_OFF_TIME:
				setMinimumOffTime((Seconds)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__MIN_OPERATING_P:
				setMinOperatingP((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__MODEL_DETAIL:
				setModelDetail((Classification)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__NOMINAL_P:
				setNominalP((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__NORMAL_PF:
				setNormalPF((EA_Model.IEC61970.Domain.Float)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__PENALTY_FACTOR:
				setPenaltyFactor((EA_Model.IEC61970.Domain.Float)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__RAISE_RAMP_RATE:
				setRaiseRampRate((ActivePowerChangeRate)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__RATED_GROSS_MAX_P:
				setRatedGrossMaxP((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__RATED_GROSS_MIN_P:
				setRatedGrossMinP((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__RATED_NET_MAX_P:
				setRatedNetMaxP((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__SHORT_PF:
				setShortPF((EA_Model.IEC61970.Domain.Float)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__SPIN_RESERVE_RAMP:
				setSpinReserveRamp((ActivePowerChangeRate)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__STARTUP_COST:
				setStartupCost((Money)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__STARTUP_TIME:
				setStartupTime((Seconds)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__STEP_CHANGE:
				setStepChange((ActivePower)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__TIE_LINE_PF:
				setTieLinePF((EA_Model.IEC61970.Domain.Float)newValue);
				return;
			case ProductionPackage.GENERATING_UNIT__VARIABLE_COST:
				setVariableCost((Money)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case ProductionPackage.GENERATING_UNIT__ALLOC_SPIN_RES_P:
				setAllocSpinResP((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__AUTO_CNTRL_MARGIN_P:
				setAutoCntrlMarginP((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__BASE_P:
				setBaseP((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__CONTROL_DEADBAND:
				setControlDeadband((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__CONTROL_PULSE_HIGH:
				setControlPulseHigh((Seconds)null);
				return;
			case ProductionPackage.GENERATING_UNIT__CONTROL_PULSE_LOW:
				setControlPulseLow((Seconds)null);
				return;
			case ProductionPackage.GENERATING_UNIT__CONTROL_RESPONSE_RATE:
				setControlResponseRate((ActivePowerChangeRate)null);
				return;
			case ProductionPackage.GENERATING_UNIT__DISP_RESERVE_FLAG:
				setDispReserveFlag((EA_Model.IEC61970.Domain.Boolean)null);
				return;
			case ProductionPackage.GENERATING_UNIT__EFFICIENCY:
				setEfficiency((PU)null);
				return;
			case ProductionPackage.GENERATING_UNIT__ENERGY_MIN_P:
				setEnergyMinP((HeatRate)null);
				return;
			case ProductionPackage.GENERATING_UNIT__FAST_START_FLAG:
				setFastStartFlag((EA_Model.IEC61970.Domain.Boolean)null);
				return;
			case ProductionPackage.GENERATING_UNIT__FUEL_PRIORITY:
				setFuelPriority((EA_Model.IEC61970.Domain.Integer)null);
				return;
			case ProductionPackage.GENERATING_UNIT__GEN_CONTROL_MODE:
				setGenControlMode(GEN_CONTROL_MODE_EDEFAULT);
				return;
			case ProductionPackage.GENERATING_UNIT__GEN_CONTROL_SOURCE:
				setGenControlSource(GEN_CONTROL_SOURCE_EDEFAULT);
				return;
			case ProductionPackage.GENERATING_UNIT__GEN_OPERATING_MODE:
				setGenOperatingMode(GEN_OPERATING_MODE_EDEFAULT);
				return;
			case ProductionPackage.GENERATING_UNIT__GOVERNOR_MPL:
				setGovernorMPL((PU)null);
				return;
			case ProductionPackage.GENERATING_UNIT__GOVERNOR_SCD:
				setGovernorSCD((PerCent)null);
				return;
			case ProductionPackage.GENERATING_UNIT__HIGH_CONTROL_LIMIT:
				setHighControlLimit((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__INITIAL_P:
				setInitialP((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__LONG_PF:
				setLongPF((EA_Model.IEC61970.Domain.Float)null);
				return;
			case ProductionPackage.GENERATING_UNIT__LOW_CONTROL_LIMIT:
				setLowControlLimit((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__LOWER_RAMP_RATE:
				setLowerRampRate((ActivePowerChangeRate)null);
				return;
			case ProductionPackage.GENERATING_UNIT__MAX_ECONOMIC_P:
				setMaxEconomicP((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__MAXIMUM_ALLOWABLE_SPINNING_RESERVE:
				setMaximumAllowableSpinningReserve((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__MAX_OPERATING_P:
				setMaxOperatingP((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__MIN_ECONOMIC_P:
				setMinEconomicP((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__MINIMUM_OFF_TIME:
				setMinimumOffTime((Seconds)null);
				return;
			case ProductionPackage.GENERATING_UNIT__MIN_OPERATING_P:
				setMinOperatingP((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__MODEL_DETAIL:
				setModelDetail((Classification)null);
				return;
			case ProductionPackage.GENERATING_UNIT__NOMINAL_P:
				setNominalP((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__NORMAL_PF:
				setNormalPF((EA_Model.IEC61970.Domain.Float)null);
				return;
			case ProductionPackage.GENERATING_UNIT__PENALTY_FACTOR:
				setPenaltyFactor((EA_Model.IEC61970.Domain.Float)null);
				return;
			case ProductionPackage.GENERATING_UNIT__RAISE_RAMP_RATE:
				setRaiseRampRate((ActivePowerChangeRate)null);
				return;
			case ProductionPackage.GENERATING_UNIT__RATED_GROSS_MAX_P:
				setRatedGrossMaxP((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__RATED_GROSS_MIN_P:
				setRatedGrossMinP((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__RATED_NET_MAX_P:
				setRatedNetMaxP((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__SHORT_PF:
				setShortPF((EA_Model.IEC61970.Domain.Float)null);
				return;
			case ProductionPackage.GENERATING_UNIT__SPIN_RESERVE_RAMP:
				setSpinReserveRamp((ActivePowerChangeRate)null);
				return;
			case ProductionPackage.GENERATING_UNIT__STARTUP_COST:
				setStartupCost((Money)null);
				return;
			case ProductionPackage.GENERATING_UNIT__STARTUP_TIME:
				setStartupTime((Seconds)null);
				return;
			case ProductionPackage.GENERATING_UNIT__STEP_CHANGE:
				setStepChange((ActivePower)null);
				return;
			case ProductionPackage.GENERATING_UNIT__TIE_LINE_PF:
				setTieLinePF((EA_Model.IEC61970.Domain.Float)null);
				return;
			case ProductionPackage.GENERATING_UNIT__VARIABLE_COST:
				setVariableCost((Money)null);
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case ProductionPackage.GENERATING_UNIT__ALLOC_SPIN_RES_P:
				return allocSpinResP != null;
			case ProductionPackage.GENERATING_UNIT__AUTO_CNTRL_MARGIN_P:
				return autoCntrlMarginP != null;
			case ProductionPackage.GENERATING_UNIT__BASE_P:
				return baseP != null;
			case ProductionPackage.GENERATING_UNIT__CONTROL_DEADBAND:
				return controlDeadband != null;
			case ProductionPackage.GENERATING_UNIT__CONTROL_PULSE_HIGH:
				return controlPulseHigh != null;
			case ProductionPackage.GENERATING_UNIT__CONTROL_PULSE_LOW:
				return controlPulseLow != null;
			case ProductionPackage.GENERATING_UNIT__CONTROL_RESPONSE_RATE:
				return controlResponseRate != null;
			case ProductionPackage.GENERATING_UNIT__DISP_RESERVE_FLAG:
				return dispReserveFlag != null;
			case ProductionPackage.GENERATING_UNIT__EFFICIENCY:
				return efficiency != null;
			case ProductionPackage.GENERATING_UNIT__ENERGY_MIN_P:
				return energyMinP != null;
			case ProductionPackage.GENERATING_UNIT__FAST_START_FLAG:
				return fastStartFlag != null;
			case ProductionPackage.GENERATING_UNIT__FUEL_PRIORITY:
				return fuelPriority != null;
			case ProductionPackage.GENERATING_UNIT__GEN_CONTROL_MODE:
				return genControlMode != GEN_CONTROL_MODE_EDEFAULT;
			case ProductionPackage.GENERATING_UNIT__GEN_CONTROL_SOURCE:
				return genControlSource != GEN_CONTROL_SOURCE_EDEFAULT;
			case ProductionPackage.GENERATING_UNIT__GEN_OPERATING_MODE:
				return genOperatingMode != GEN_OPERATING_MODE_EDEFAULT;
			case ProductionPackage.GENERATING_UNIT__GOVERNOR_MPL:
				return governorMPL != null;
			case ProductionPackage.GENERATING_UNIT__GOVERNOR_SCD:
				return governorSCD != null;
			case ProductionPackage.GENERATING_UNIT__HIGH_CONTROL_LIMIT:
				return highControlLimit != null;
			case ProductionPackage.GENERATING_UNIT__INITIAL_P:
				return initialP != null;
			case ProductionPackage.GENERATING_UNIT__LONG_PF:
				return longPF != null;
			case ProductionPackage.GENERATING_UNIT__LOW_CONTROL_LIMIT:
				return lowControlLimit != null;
			case ProductionPackage.GENERATING_UNIT__LOWER_RAMP_RATE:
				return lowerRampRate != null;
			case ProductionPackage.GENERATING_UNIT__MAX_ECONOMIC_P:
				return maxEconomicP != null;
			case ProductionPackage.GENERATING_UNIT__MAXIMUM_ALLOWABLE_SPINNING_RESERVE:
				return maximumAllowableSpinningReserve != null;
			case ProductionPackage.GENERATING_UNIT__MAX_OPERATING_P:
				return maxOperatingP != null;
			case ProductionPackage.GENERATING_UNIT__MIN_ECONOMIC_P:
				return minEconomicP != null;
			case ProductionPackage.GENERATING_UNIT__MINIMUM_OFF_TIME:
				return minimumOffTime != null;
			case ProductionPackage.GENERATING_UNIT__MIN_OPERATING_P:
				return minOperatingP != null;
			case ProductionPackage.GENERATING_UNIT__MODEL_DETAIL:
				return modelDetail != null;
			case ProductionPackage.GENERATING_UNIT__NOMINAL_P:
				return nominalP != null;
			case ProductionPackage.GENERATING_UNIT__NORMAL_PF:
				return normalPF != null;
			case ProductionPackage.GENERATING_UNIT__PENALTY_FACTOR:
				return penaltyFactor != null;
			case ProductionPackage.GENERATING_UNIT__RAISE_RAMP_RATE:
				return raiseRampRate != null;
			case ProductionPackage.GENERATING_UNIT__RATED_GROSS_MAX_P:
				return ratedGrossMaxP != null;
			case ProductionPackage.GENERATING_UNIT__RATED_GROSS_MIN_P:
				return ratedGrossMinP != null;
			case ProductionPackage.GENERATING_UNIT__RATED_NET_MAX_P:
				return ratedNetMaxP != null;
			case ProductionPackage.GENERATING_UNIT__SHORT_PF:
				return shortPF != null;
			case ProductionPackage.GENERATING_UNIT__SPIN_RESERVE_RAMP:
				return spinReserveRamp != null;
			case ProductionPackage.GENERATING_UNIT__STARTUP_COST:
				return startupCost != null;
			case ProductionPackage.GENERATING_UNIT__STARTUP_TIME:
				return startupTime != null;
			case ProductionPackage.GENERATING_UNIT__STEP_CHANGE:
				return stepChange != null;
			case ProductionPackage.GENERATING_UNIT__TIE_LINE_PF:
				return tieLinePF != null;
			case ProductionPackage.GENERATING_UNIT__VARIABLE_COST:
				return variableCost != null;
		}
		return super.eIsSet(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String toString() {
		if (eIsProxy()) return super.toString();

		StringBuffer result = new StringBuffer(super.toString());
		result.append(" (genControlMode: ");
		result.append(genControlMode);
		result.append(", genControlSource: ");
		result.append(genControlSource);
		result.append(", genOperatingMode: ");
		result.append(genOperatingMode);
		result.append(')');
		return result.toString();
	}

} //GeneratingUnitImpl
